package com.game.Maze.Util;

import com.badlogic.gdx.math.Vector2;

/**
 * Объект возвращающий размеры элементов для рендеринга
 * 
 */
public class DimesionsFactory
{
  // Размер комнаты в пикселях
  private static final int m_RoomSize = 64;

  // Число комнат которые должны быть виндны в камере
  private static final int m_ViewportRoomCount = 5;

  /**
   * Рассчитывает положение спрайта объекта для рендеринга по заданной колонке и строке лабиринта
   * 
   * @param aColumn колонка лабиринта
   * @param aRow строка лабиринта
   * @return точка с координатами положения спрайта
   */
  public Vector2 startPoint(int aColumn, int aRow)
  {
    Vector2 start = new Vector2();

    start.x = aColumn * roomSize();
    start.y = aRow * roomSize();

    return start;
  }

  /**
   * Возвращает размер видимой области лабиринта.
   * 
   * @return размер камеры
   */
  public int cameraSize()
  {
    return m_ViewportRoomCount * roomSize();
  }

  /**
   * @return размер комнаты для рендеринга
   */
  public int roomSize()
  {
    return m_RoomSize;
  }

  /**
   * @return половину размера комнаты для рендеринга
   */
  public int roomHalfSize()
  {
    return roomSize() / 2;
  }

  private static class DimesionsFactoryHolder
  {
    public static final DimesionsFactory instance = new DimesionsFactory();
  }

  public static DimesionsFactory instance()
  {
    return DimesionsFactoryHolder.instance;
  }
}
